package stream;

import java.util.ArrayList;
import java.util.stream.Stream;
/*
中间操作方法（后续还可以继续调用Stream方法）
filter过滤
limit取前几个
skip去掉前几个
distinct去重
concat合并
 */

public class StreamDemo2 {
    public static void main(String[] args) {
        //filter方法
        ArrayList<String> list = new ArrayList<String>();
        list.add("张一我");
        list.add("王国");
        list.add("张二的");
        list.add("增强");
        list.stream().filter(s->s.startsWith("张")).filter(s -> s.length()==3).forEach(s-> System.out.println(s));
        System.out.println("**************************");
        //limit方法：获取集合前几个元素
        list.stream().limit(3).forEach(System.out::println);
        System.out.println("**************************");
        //skip方法:跳过n个元素
        list.stream().skip(1).forEach(System.out::println);
        System.out.println("**************************");
        //组合使用：跳过第一个，打印剩下的前两个
        list.stream().skip(1).limit(2).forEach(System.out::println);
        System.out.println("**************************");
        //concat:合并两个流
        Stream<String> stream1 = list.stream().limit(2);
        Stream<String> stream2 = list.stream().skip(1);
        Stream<String> stream3 = Stream.concat(stream1, stream2);
        System.out.println("**************************");
        //distinct:去重（基于hashCode和equal方法）
        //流对象已经被消费过（使用过），就不允许再次消费
        stream3.distinct().forEach(System.out::println);
    }
}
